﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
namespace QuanLyThuVien
{
    public partial class frmCaiDat : Form
    {
        ThamSoBUS thamsoBUS = new ThamSoBUS();
        TheLoaiSachBUS theLoaiBUS = new TheLoaiSachBUS();
        LoaiDocGiaBUS loaiDGBUS = new LoaiDocGiaBUS();
        TacGiaBUS tacGiaBUS = new TacGiaBUS();
        public frmCaiDat()
        {
            InitializeComponent();
        }

        private void frmCaiDat_Load(object sender, EventArgs e)
        {
            tb_tuoiToiThieu.Text = thamsoBUS.GetGiaTriThamSo(thamsoBUS.TuoiToiThieu).ToString();
            tb_tuoiToiDa.Text = thamsoBUS.GetGiaTriThamSo(thamsoBUS.TuoiToiDa).ToString();
            tb_thoiHanThe.Text = thamsoBUS.GetGiaTriThamSo(thamsoBUS.ThoiHanThe).ToString();
            tb_soNgayMuonToiDa.Text = thamsoBUS.GetGiaTriThamSo(thamsoBUS.SoNgayMuonToiDa).ToString();
            tb_soSachMuonToiDa.Text = thamsoBUS.GetGiaTriThamSo(thamsoBUS.SoSachMuonToiDa).ToString();
            tb_tienPhat.Text = thamsoBUS.GetGiaTriThamSo(thamsoBUS.SoTienPhat).ToString();
            UpdateListBoxLoaiDG();
            UpdateListBoxTheLoai();
            UpdateListBoxTacGia();
        }

        private void tb_tuoiToiThieu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        private void tb_tuoiToiDa_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        private void tb_thoiHanThe_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        private void tb_soSachMuonToiDa_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        private void tb_soNgayMuonToiDa_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void button_themLoaiDG_Click(object sender, EventArgs e)
        {
            ThemLoaiDG();
        }
        private void button_xoaLoaiDG_Click(object sender, EventArgs e)
        {
            string loaiDGXoa = listBox_loaiDG.SelectedItem.ToString();
            try
            {
                if (loaiDGBUS.DeleteLoaiDocGia(loaiDGXoa))
                {
                    MessageBox.Show("Xóa thành công!");
                    UpdateListBoxLoaiDG();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Xóa loại độc giả này ảnh hưởng tới dữ liệu khác!", "Không thể xóa");
            }
        }
        private void button_themTG_Click(object sender, EventArgs e)
        {
            ThemTacGia();
        }
        private void button_xoaTG_Click(object sender, EventArgs e)
        {
            string tacGiaXoa = listBox_tacGia.SelectedItem.ToString();
            try
            {
                if (tacGiaBUS.DeleteTacGia(tacGiaXoa))
                {
                    MessageBox.Show("Xóa thành công!");
                    UpdateListBoxTacGia();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Xóa tác giả này ảnh hưởng tới dữ liệu khác!", "Không thể xóa");
            }
        }
        private void button_themTheLoai_Click(object sender, EventArgs e)
        {
            ThemTheLoai();
        }
        private void button_capNhat_Click(object sender, EventArgs e)
        {
            thamsoBUS.UpdateThamSo(thamsoBUS.TuoiToiDa, int.Parse(tb_tuoiToiDa.Text));
            thamsoBUS.UpdateThamSo(thamsoBUS.TuoiToiThieu, int.Parse(tb_tuoiToiThieu.Text));
            thamsoBUS.UpdateThamSo(thamsoBUS.ThoiHanThe, int.Parse(tb_thoiHanThe.Text));
            thamsoBUS.UpdateThamSo(thamsoBUS.SoNgayMuonToiDa, int.Parse(tb_soNgayMuonToiDa.Text));
            thamsoBUS.UpdateThamSo(thamsoBUS.SoSachMuonToiDa, int.Parse(tb_soSachMuonToiDa.Text));
            thamsoBUS.UpdateThamSo(thamsoBUS.SoTienPhat, int.Parse(tb_tienPhat.Text));

            MessageBox.Show("Cập nhập thành công!");
        }
        private void button_thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void button_xoaTheLoai_Click(object sender, EventArgs e)
        {
            string theLoaiXoa = listBox_theLoai.SelectedItem.ToString();
            try
            {
                if (theLoaiBUS.DeleteTheLoaiSach(theLoaiXoa))
                {
                    MessageBox.Show("Xóa thành công!");
                    UpdateListBoxTheLoai();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Xóa thể loại này ảnh hưởng tới dữ liệu khác!", "Không thể xóa");
            }
        }

        private void UpdateListBoxTheLoai()
        {
            listBox_theLoai.Items.Clear();
            foreach (string item in theLoaiBUS.GetListTheLoaiSach())
                listBox_theLoai.Items.Add(item);
        }
        private void UpdateListBoxLoaiDG()
        {
            listBox_loaiDG.Items.Clear();
            foreach (string item in loaiDGBUS.GetListLoaiDocGia())
                listBox_loaiDG.Items.Add(item);
        }
        private void UpdateListBoxTacGia()
        {
            listBox_tacGia.Items.Clear();
            foreach (string item in tacGiaBUS.GetListTenTacGia())
                listBox_tacGia.Items.Add(item);
        }


        private void tb_loaiDG_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                ThemLoaiDG();
            }
        }
        private void tb_tacGiaThem_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                ThemTacGia();
            }
        }
        private void tb_tenTheLoaiSach_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                ThemTheLoai();
            }
        }

        private void ThemLoaiDG()
        {
            string loaiDGThem = InputFormat.formatString(tb_loaiDG.Text);
            if (loaiDGThem.Length == 0)
                MessageBox.Show("Chưa nhập tên loại độc giả.", "Lỗi");
            {
                if (loaiDGBUS.InsertLoaiDocGia(loaiDGThem))
                {
                    listBox_loaiDG.Items.Add(loaiDGThem);
                    tb_loaiDG.Text = "";
                }
                else MessageBox.Show("Loại độc giả đã tồn tại.", "Lỗi");
            }
        }
        private void ThemTacGia()
        {
            string tacGiaThem = InputFormat.formatString(tb_tacGiaThem.Text);
            if (tacGiaThem.Length == 0)
                MessageBox.Show("Chưa nhập tên tác giả.", "Lỗi");
            {
                if (tacGiaBUS.InsertTacGia(tacGiaThem))
                {
                    listBox_tacGia.Items.Add(tacGiaThem);
                    tb_tacGiaThem.Text = "";
                }
                else MessageBox.Show("Tác giả đã tồn tại.", "Lỗi");
            }
        }
        private void ThemTheLoai()
        {
            string theLoaiThem = InputFormat.formatString(tb_tenTheLoaiSach.Text);
            if (theLoaiThem.Length == 0)
                MessageBox.Show("Chưa nhập tên thể loại.", "Lỗi");
            else
            {
                if (theLoaiBUS.InsertTheLoaiSach(theLoaiThem))
                {
                    listBox_theLoai.Items.Add(theLoaiThem);
                    tb_tenTheLoaiSach.Text = "";
                }
                else MessageBox.Show("Tên thể loại đã tồn tại.", "Lỗi");
            }
        }
    }
}
